package com.sans.oop;

import org.junit.Test;

/**
 * @author Sans
 */
public class EncapsulationTest {
    static class Cat {
        private String name;
        private Integer age;

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public Integer getAge() {
            return age;
        }

        public void setAge(Integer age) {
            this.age = age;
        }
    }

    static class Dog {
        /**
         * 静态属性属于这个类，不属于某个实例
         * 静态：共享，唯一，先行
         */
        private static Integer age = 5;

        /**
         * 静态方法属于这个类，不属于某个实例
         * 静态：共享，唯一，先行
         */
        public static Integer getAge() {
            // 静态方法中不能调用非静态属性，且不能使用this
            return age;
        }
    }

    @Test
    public void classMemberCall() {
        Cat cat01 = new Cat();
        cat01.setName("贝贝");
        cat01.setAge(3);
        System.out.println(cat01.getName());
        System.out.println(cat01.getAge());

        Cat cat02 = new Cat();
        System.out.println(cat02.getName());
    }

    @Test
    public void classStaticMemberCall() {
        System.out.println(Dog.getAge());
    }
}